package com.pangu.message;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONAware;
import com.alibaba.fastjson.JSONObject;

import java.util.Optional;

/**
 * @author Linbizhao
 * @description: JSON能力接口
 * @since 2023/11/23 15:51
 */
public interface Jsonable {

    /**
     * 转JSON对象
     *
     * @return
     */
    default JSONObject toJSONObject() {
        return JSON.parseObject(JSON.toJSONString(this));
    }

    /**
     * 转JSON字符串对象
     *
     * @return
     */
    default String toJSONString() {
        return Optional.ofNullable(toJSONObject()).map(JSONAware::toJSONString).orElse("{}");
    }

}
